At least some known systems, such as computing systems, include browsers that support various mechanisms for receiving a continuous stream of image data from a server. For example, in a virtual desktop infrastructure (VDI), a virtual desktop may be accessible by one or more remote clients through a network and a web server may be used to provide various image data from the virtual desktop to one or more remote clients. More specifically, each remote client may include a browser or a web client that supports various methods for receiving a continuous stream of image data from the web server.
One known method that a web client supports to receive image data from the web server includes creating individual image objects, such as JAVASCRIPT image objects, and specifying an image source using a remote uniform resource locator (URL) to reference an image located on the web server. With this approach, the web client will establish a hypertext transfer protocol (HTTP) GET request to the web server and retrieve a binary file that represents an image, such as a joint photographic experts group (JPEG) or portable network graphics (PNG) file. However, this approach results in a latency overhead as multiple GET requests must be made in succession to retrieve all of the images associated with a remote desktop. For example, if the latency between the web client and the web server is 50 ms, then 100 ms is consumed from the full round trip that occurs when retrieving the image data. A second method that can be used with a relatively lower latency is to push image data from the web server to the web client by an HTTP XHR request using a keep-alive and a chunked-encoding mechanism, such as COMET. The second method reduces the latency overhead required to push data from the web server to the web client by eliminating the need for a client request. However, in this approach, image data is delivered to the web client in a text base64 format that incurs additional encoding and decoding latency on both ends and results in an increase in bandwidth consumption. While the impact of the increased bandwidth may be mitigated through the use of deflate compression, such an approach adds some latency for encoding and decoding for deflate compression.
Another method of transmitting image data to clients involves the use of websockets in a similar fashion to COMET. However, websockets are not as widely available and most websockets implementations do not support deflate compression. While websockets may be used to deliver binary image data to the web client, the web client may be required to convert binary image data to base64 before instantiating an image object. Because this conversion process happens in JAVASCRIPT, the added processing delay can be very significant. Accordingly, there is a need for cross-platform systems and methods for transmitting image data to web clients with a substantially reduced latency and, wherein the systems and methods have a substantially low impact on bandwidth consumption.